Enum এবং Enum Class Java প্রোগ্রামিংয়ের শক্তিশালী বৈশিষ্ট্য যা java.lang প্যাকেজের অংশ। Enum হল একটি স্পেশাল ধরনের ক্লাস যা কনস্ট্যান্ট ভ্যালু (constant values) ধারণ করে। এটি মূলত প্রোগ্রামে সীমিত এবং নির্দিষ্ট সেটের জন্য মান প্রতিনিধিত্ব করতে ব্যবহৃত হয়, যেমন রঙ, দিন, মাস, ডিরেকশন ইত্যাদি। Java 5-এ Enums Java তে যোগ করা হয়েছিল, যা কোডের readability এবং maintainability বৃদ্ধি করে।
Enum Class কী?
Enum হল একটি বিশেষ ধরনের ক্লাস যা শুধুমাত্র একটি সীমিত সংখ্যক কনস্ট্যান্ট মান ধারণ করতে পারে। এটি সাধারণ ক্লাসের মতই, তবে এটি প্রোগ্রামিংয়ের এমন কেসগুলিতে ব্যবহৃত হয় যেখানে একটি নির্দিষ্ট সংখ্যক কনস্ট্যান্ট মান থাকতে পারে এবং আপনি ঐ কনস্ট্যান্টগুলিকে পরিচালনা করতে চান।
Enum ক্লাস java.lang প্যাকেজের অংশ এবং এটি java.lang.Enum ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। Enum ক্লাসটি Java তে একটি type-safe কনস্ট্যান্ট মানের সংগ্রহ তৈরির সুযোগ দেয়, যা কোডকে আরও নিরাপদ এবং সহজবোধ্য করে তোলে।
Enum Class তৈরি করা:
Basic Enum: একটি
enumক্লাস সাধারণত কনস্ট্যান্ট মানের একটি তালিকা ধারণ করে। এগুলি সাধারণত বড় হাতের অক্ষরে লেখা হয় এবং প্রোগ্রামের মধ্যে বিভিন্ন মান প্রতিনিধিত্ব করে।সিনট্যাক্স:
enum EnumName { CONSTANT1, CONSTANT2, CONSTANT3, ... ; }উদাহরণ:
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } public class EnumExample { public static void main(String[] args) { Day day = Day.MONDAY; System.out.println(day); // Output: MONDAY } }এখানে,
Dayএকটিenumক্লাস যা সপ্তাহের দিনগুলোকে প্রতিনিধিত্ব করে। আমরাMONDAYকনস্ট্যান্টটি ব্যবহার করেছি।Enum with Methods and Fields: আপনি
enumক্লাসে fields, constructors, এবং methods ব্যবহার করতে পারেন। এর মাধ্যমে কাস্টম লজিক প্রয়োগ করা সম্ভব।উদাহরণ:
public enum Day { SUNDAY("Rest day"), MONDAY("Work day"), TUESDAY("Work day"), WEDNESDAY("Work day"), THURSDAY("Work day"), FRIDAY("Work day"), SATURDAY("Rest day"); private String typeOfDay; // Constructor Day(String typeOfDay) { this.typeOfDay = typeOfDay; } public String getTypeOfDay() { return typeOfDay; } } public class EnumWithMethods { public static void main(String[] args) { for (Day day : Day.values()) { System.out.println(day + ": " + day.getTypeOfDay()); } } }আউটপুট:
SUNDAY: Rest day MONDAY: Work day TUESDAY: Work day WEDNESDAY: Work day THURSDAY: Work day FRIDAY: Work day SATURDAY: Rest dayএখানে,
Dayenum ক্লাসে একটিStringfield এবং একটি কনস্ট্রাক্টর আছে যা প্রতিটি দিনের জন্য বিভিন্ন ধরনের তথ্য (যেমনRest dayবাWork day) সংরক্ষণ করছে।Enum Methods:
values(): এটি একটিstaticmethod যা enum এর সমস্ত কনস্ট্যান্টকে একটি অ্যারে হিসেবে ফেরত দেয়।valueOf(String name): এটি একটিstaticmethod যা একটি কনস্ট্যান্ট নামের মাধ্যমে enum এর মান ফেরত দেয়।ordinal(): এটি একটি method যা একটিenumকনস্ট্যান্টের ইনডেক্স (অথবা পজিশন) প্রদান করে।
উদাহরণ:
public class EnumMethodsExample { public static void main(String[] args) { // Printing all enum values using values() for (Day day : Day.values()) { System.out.println(day); } // Get enum constant by name using valueOf() Day myDay = Day.valueOf("MONDAY"); System.out.println("My day: " + myDay); // Output: MONDAY // Get the ordinal value of a specific enum constant System.out.println("Ordinal of MONDAY: " + myDay.ordinal()); // Output: 1 } }
Enum Class এর সুবিধা:
- Type Safety: Enums Java তে type safety প্রদান করে। এটি একে অপরের সাথে মেলানো (incorrect value assignment) প্রতিরোধ করে এবং শুধুমাত্র পূর্বনির্ধারিত কনস্ট্যান্ট ভ্যালুগুলির সাথে কাজ করতে অনুমতি দেয়।
- Code Clarity and Maintainability: Enums ব্যবহার করা সহজ এবং পড়তে সুবিধাজনক। যখন আপনি কোন কনস্ট্যান্ট মানের একটি সেট নির্ধারণ করতে চান, তখন enum কোডের মধ্যে স্পষ্টতা এবং maintainability বাড়ায়।
- Rich Functionality: Enums Java তে কাস্টম fields, methods, এবং constructors যোগ করার সুযোগ দেয়, যা তাদের কার্যকারিতা বিস্তৃত করে। এটি তাদের শুধু কনস্ট্যান্টের জন্যই নয়, কিন্তু আরও কাস্টম লজিকের জন্যও ব্যবহারযোগ্য করে তোলে।
- Built-in Methods:
values(),valueOf(), এবংordinal()মত বিল্ট-ইন মেথডস এর মাধ্যমে enum ক্লাসের ব্যবহারের পরিসর আরও বাড়ানো হয়। - Switch Case Compatibility: Enum ক্লাসের কনস্ট্যান্টগুলি switch-case স্টেটমেন্টের সঙ্গে ব্যবহার করা যায়। এটি switch স্টেটমেন্টকে আরও কার্যকর এবং নিরাপদ করে তোলে, কারণ আপনি enum কনস্ট্যান্টই শুধু ব্যবহার করতে পারবেন।
Switch-Case with Enum Example:
public class SwitchEnumExample {
public static void main(String[] args) {
Day day = Day.MONDAY;
switch (day) {
case MONDAY:
System.out.println("Start of the work week.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekend!");
break;
default:
System.out.println("Mid-week days.");
break;
}
}
}
আউটপুট:
Start of the work week.
Java তে Enum ক্লাস Java.lang প্যাকেজের একটি শক্তিশালী বৈশিষ্ট্য যা প্রোগ্রামারদের কনস্ট্যান্ট মানের একটি নির্দিষ্ট সেট নির্ধারণ করতে সাহায্য করে। এটি type safety, code readability, এবং maintainability বৃদ্ধির জন্য গুরুত্বপূর্ণ। Enum ব্যবহার করার মাধ্যমে আপনি কাস্টম মেথড এবং ফিল্ডস যোগ করতে পারেন এবং এতে কোড আরও পরিষ্কার এবং কার্যকর হয়ে ওঠে।
Enum (এনাম) Java তে একটি বিশেষ ক্লাস টাইপ যা একটি ফিক্সড সেটের ভ্যালু (constants) ডিফাইন করতে ব্যবহৃত হয়। এটি Java 5 থেকে java.lang প্যাকেজে অন্তর্ভুক্ত করা হয়েছে। Enum প্রাথমিকভাবে ব্যবহার করা হয় যখন আপনার কোন ভ্যারিয়েবল বা কনস্ট্যান্টের সম্ভাব্য মানগুলি পূর্বনির্ধারিত এবং পরিবর্তনযোগ্য না থাকে।
Enum ক্লাস ডিফাইন করে আপনি একটি ভ্যালু (constant) লিস্ট তৈরি করতে পারেন, যা আপনার প্রোগ্রামের মধ্যে একটি নির্দিষ্ট সেটের মধ্যে থাকবে। এই ভ্যালুগুলি immutable হয় এবং type-safe (এনাম ভ্যালু প্রকারের সাথে মেলে এমন একমাত্র মান গ্রহণ করা হয়)।
Enum এর প্রয়োজন কেন?
- Code readability and maintainability: এনাম কনস্ট্যান্টের মাধ্যমে কোডে ধ্রুবক মান ব্যবহার করা আরও সহজ এবং বোধগম্য হয়।
- Type safety: এনাম ক্লাস ব্যবহার করার মাধ্যমে আপনি ভুল কনস্ট্যান্ট মান ব্যবহার থেকে রক্ষা পান, যেহেতু কম্পাইলার এনাম টাইপ চেকিং করে।
- Avoid magic numbers or strings: অ্যাপ্লিকেশনের মধ্যে যেকোনো ধ্রুবক মান যেমন, সংখ্যা বা স্ট্রিং ব্যবহার করার পরিবর্তে, আপনি এনাম ব্যবহার করতে পারেন, যা কোডের বুঝতে সহজ করে তোলে।
- Easy to extend and manage: যখন ভবিষ্যতে নতুন কনস্ট্যান্ট যুক্ত করার প্রয়োজন হয়, তখন এটি সহজেই করা যায়।
Enum কীভাবে কাজ করে?
Java-এ Enum একটি বিশেষ ধরনের ক্লাস যা java.lang.Enum ক্লাস থেকে ইনহেরিট করে। একবার একটি এনাম ডিফাইন করা হলে, তার সমস্ত কনস্ট্যান্টগুলি অপরিবর্তনীয় (immutable) এবং পূর্বনির্ধারিত থাকে।
Enum তৈরি করার প্রক্রিয়া:
এনাম ক্লাস তৈরি করতে সাধারণত enum কিওয়ার্ড ব্যবহার করা হয়।
Enum Syntax:
enum EnumName {
CONSTANT1, CONSTANT2, CONSTANT3;
}
Enum Example:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
switch (today) {
case MONDAY:
System.out.println("Start of the week!");
break;
case FRIDAY:
System.out.println("Almost weekend!");
break;
default:
System.out.println("Mid week!");
break;
}
}
}
Output:
Start of the week!
Explanation:
- এখানে,
Dayএকটিenumযা সাপ্তাহিক দিনের কনস্ট্যান্ট তৈরি করে। - আপনি
Day.MONDAYব্যবহার করে কনস্ট্যান্ট অ্যাক্সেস করতে পারেন। switchস্টেটমেন্টের মাধ্যমে এনাম কনস্ট্যান্টের উপর নির্ভর করে কন্ডিশন চেক করা হয়েছে।
Enum এর অন্যান্য ফিচারসমূহ:
- Enum with fields, methods, and constructors:
এনামে আপনি ফিল্ড, কনস্ট্রাক্টর এবং মেথড ব্যবহার করতে পারেন। এতে করে এনাম কনস্ট্যান্টের জন্য অতিরিক্ত ডেটা যোগ করা সম্ভব হয়।
Example with fields and methods:
enum Day {
SUNDAY("Weekend"), MONDAY("Workday"), TUESDAY("Workday"), WEDNESDAY("Workday"),
THURSDAY("Workday"), FRIDAY("Workday"), SATURDAY("Weekend");
private String typeOfDay;
// Constructor
Day(String typeOfDay) {
this.typeOfDay = typeOfDay;
}
// Method
public String getTypeOfDay() {
return this.typeOfDay;
}
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println(today + " is a " + today.getTypeOfDay());
}
}
Output:
MONDAY is a Workday
Explanation:
DayএনামেtypeOfDayনামের একটি ফিল্ড রয়েছে, যা প্রতিটি কনস্ট্যান্টের সাথে যুক্ত থাকে।getTypeOfDay()মেথড ব্যবহার করে প্রতিটি দিনের টাইপ পাওয়া যায়।
- Enum Iteration:
Java এ, আপনি একটি for-each লুপ ব্যবহার করে এনামের সমস্ত কনস্ট্যান্ট পেতে পারেন।
Example with iteration:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Iterating through enum values
for (Day day : Day.values()) {
System.out.println(day);
}
}
}
Output:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
Explanation:
Day.values()মেথডটি এনামের সমস্ত কনস্ট্যান্ট প্রদান করে, এবংfor-eachলুপে তাদের উপস্থাপন করা হয়।
- Enum Comparison:
এনামের কনস্ট্যান্টগুলিকে == অপারেটর বা compareTo() মেথড দিয়ে তুলনা করা যেতে পারে।
Example with comparison:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
if (today == Day.MONDAY) {
System.out.println("It's Monday!");
}
// Using compareTo
int comparison = today.compareTo(Day.FRIDAY);
System.out.println("Comparison result: " + comparison); // Negative value because MONDAY comes before FRIDAY
}
}
Output:
It's Monday!
Comparison result: -4
Explanation:
==অপারেটর এনাম কনস্ট্যান্টগুলির তুলনা করতে ব্যবহৃত হয়।compareTo()মেথডটি এনাম কনস্ট্যান্টগুলির মধ্যে একটি লেক্সিকোগ্রাফিক্যাল কম্প্যারিজন করে, এবং একটি নেতিবাচক, শূন্য অথবা ধনাত্মক মান রিটার্ন করে।
Enum এর সুবিধা:
- Type Safety: এনাম ব্যবহার করলে শুধুমাত্র ডিফাইন করা কনস্ট্যান্টগুলো ব্যবহার করা যাবে, ফলে ভুল মান ব্যবহারের সম্ভাবনা কমে যায়।
- Improved Readability: স্ট্রিং বা নম্বরের পরিবর্তে এনাম কনস্ট্যান্ট ব্যবহার করা কোডকে আরও পরিষ্কার এবং বোধগম্য করে।
- Built-in Methods: Java এনামগুলির জন্য অনেক বিল্ট-ইন মেথড সরবরাহ করে, যেমন
values(),valueOf(),ordinal()ইত্যাদি। - Switch Statements: এনাম কনস্ট্যান্টগুলি
switchস্টেটমেন্টের মধ্যে সরাসরি ব্যবহার করা যায়, যা কোডকে আরও পরিষ্কার এবং সহজ করে তোলে।
Java তে Enum হল একটি শক্তিশালী এবং কার্যকরী ফিচার যা ফিক্সড সেট কনস্ট্যান্টের জন্য ব্যবহৃত হয়। এটি কোডের রিডেবিলিটি এবং মেইনটেইনেবিলিটি উন্নত করে এবং type safety প্রদান করে, যার ফলে ত্রুটি কম হয়। এনাম বিভিন্ন কাজের জন্য উপযোগী, যেমন ডে অফ উইক, মুড, মাস, স্টেটাস কনস্ট্যান্ট ইত্যাদি।
Java 5 থেকে Enum (এনাম) ক্লাস Java ভাষায় যুক্ত করা হয়েছে। এটি একটি বিশেষ ক্লাস যা পূর্বনির্ধারিত এবং সীমিত মানের একটি গ্রুপকে প্রতিনিধিত্ব করে। Enum ক্লাসটি প্রাথমিকভাবে স্থিতিশীল, নির্দিষ্ট মানের একটি সেট (যেমন, সপ্তাহের দিন, মাস, ট্রাফিক সিগনাল ইত্যাদি) নির্ধারণ করার জন্য ব্যবহৃত হয়।
Enum ক্লাসের মূল সুবিধা হল:
- কোডকে আরও পাঠযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
- ভ্যালিডেশন সহজ করে, কারণ প্রাক-নির্ধারিত মানগুলির বাইরে আর কোনো মান দেওয়া সম্ভব হয় না।
switchকেস স্টেটমেন্টেenumব্যবহার করা খুব সহজ।
Enum এর সিনট্যাক্স
Java তে Enum ডিফাইন করার জন্য একটি নতুন enum কিওয়ার্ড ব্যবহার করা হয়। এর সাদৃশ্য সাধারণ ক্লাস ডিফাইন করার মতোই, তবে কিছু বিশেষত্ব রয়েছে। enum এর মধ্যে কেবলমাত্র সুনির্দিষ্ট মান থাকতে পারে।
বেসিক Enum সিনট্যাক্স:
enum EnumName {
CONSTANT_1, CONSTANT_2, CONSTANT_3; // enum constants
}
Enum উদাহরণ:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Accessing enum constants
Day today = Day.MONDAY;
// Using switch case with enum
switch (today) {
case MONDAY:
System.out.println("Start of the week!");
break;
case FRIDAY:
System.out.println("End of the week!");
break;
default:
System.out.println("Middle of the week.");
}
}
}
Output:
Start of the week!
Enum এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য এবং ব্যবহার
1. Enum Constants
- Enum constants হল immutable এবং static।
- একবার enum constant ডিফাইন হলে, তাদের মান পরিবর্তন করা সম্ভব নয়।
2. Methods in Enum
- Enum ক্লাসে সাধারণ ক্লাসের মতো মেথড এবং কনস্ট্রাক্টর থাকতে পারে।
- আপনি
values()এবংvalueOf()এর মতো মেথড ব্যবহার করতে পারেন যা enum এর সাথে সম্পর্কিত কাজ সহজ করে।
3. values() Method
values()মেথড একটি অ্যারে রিটার্ন করে, যা enum এর সমস্ত কনস্ট্যান্ট ধারণ করে।
উদাহরণ:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Using values() method to loop through enum constants
for (Day day : Day.values()) {
System.out.println(day);
}
}
}
Output:
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
4. valueOf() Method
valueOf()মেথডটি একটি স্ট্রিং প্যারামিটার নিয়ে, সে স্ট্রিংয়ের মানের সাথে মেলে এমন enum constant রিটার্ন করে।
উদাহরণ:
public class EnumExample {
public static void main(String[] args) {
Day today = Day.valueOf("MONDAY");
System.out.println("Today is: " + today);
}
}
Output:
Today is: MONDAY
5. Adding Fields and Methods to Enums
- আপনি enum constants এর সাথে অতিরিক্ত fields এবং methods যুক্ত করতে পারেন।
উদাহরণ:
public enum Day {
MONDAY("Start of the week"),
TUESDAY("Second day"),
WEDNESDAY("Middle of the week"),
THURSDAY("Almost weekend"),
FRIDAY("End of the work week"),
SATURDAY("Weekend"),
SUNDAY("Rest day");
private String description;
// Constructor
Day(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
public class EnumExample {
public static void main(String[] args) {
for (Day day : Day.values()) {
System.out.println(day + ": " + day.getDescription());
}
}
}
Output:
MONDAY: Start of the week
TUESDAY: Second day
WEDNESDAY: Middle of the week
THURSDAY: Almost weekend
FRIDAY: End of the work week
SATURDAY: Weekend
SUNDAY: Rest day
6. Enum with Switch Statement
enumব্যবহার করেswitchstatement খুবই কার্যকরী, কারণ প্রতিটিenumকনস্ট্যান্ট একটি distinct মান ধারণ করে যাswitchকেসের মধ্যে ব্যবহার করা যায়।
উদাহরণ:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public class EnumSwitchExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
switch (today) {
case MONDAY:
System.out.println("Start of the week!");
break;
case FRIDAY:
System.out.println("End of the week!");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekend!");
break;
default:
System.out.println("Mid-week!");
}
}
}
Output:
Start of the week!
Enum এর ব্যবহার ক্ষেত্রসমূহ:
- Fixed set of constants: যেমন সপ্তাহের দিন, মাসের নাম, বা HTTP status code গুলি।
- State representation: প্রোগ্রামে একটি স্থিতি বা অবস্থা (যেমন: ট্রাফিক লাইটের রং) প্রতিনিধিত্ব করার জন্য।
- Switch Statements:
enumসাধারণতswitchস্টেটমেন্টের মধ্যে ব্যবহৃত হয়, যেখানে একাধিক ক্ষেত্রে নির্দিষ্ট মানের উপর ভিত্তি করে লজিক করা হয়।
Enum ক্লাস Java-র একটি শক্তিশালী বৈশিষ্ট্য যা predefined constants গুলি পরিচালনা করার জন্য ব্যবহৃত হয়। এটি আপনার কোডে নিরাপত্তা, পাঠযোগ্যতা, এবং ম্যানটেনেবিলিটি বাড়ায়। যখন আপনার কোডে fixed set of values থাকে, তখন Enum একটি খুবই কার্যকরী এবং সুবিধাজনক উপায় হয়ে ওঠে।
Enum Java-তে একটি বিশেষ ক্লাস যা একটি নির্দিষ্ট সংখ্যক কনস্ট্যান্ট ভ্যালু ধারণ করে। এটি Java 5 থেকে Java.lang.Enum ক্লাসের মাধ্যমে ইমপ্লিমেন্ট করা হয়েছে এবং এটি প্রোগ্রামিংয়ে ডেটার সীমাবদ্ধ সেট তৈরি করতে ব্যবহৃত হয়। Enums ব্যবহার করে নির্দিষ্ট সংখ্যক অবজেক্ট তৈরি করা যায় এবং সেই অবজেক্টগুলোর মধ্যে সিলেকশন করতে সুবিধা হয়।
Enum ক্লাসে কিছু বিশেষ মেথড রয়েছে, যা Java Enums ব্যবহার করার সময় সহায়ক। এই মেথডগুলো হল:
values()valueOf()ordinal()
এগুলি Enum ক্লাস দ্বারা প্রদান করা হয় এবং এগুলি ব্যবহার করা খুবই সাধারণ।
1. values() Method:
values() মেথড একটি Enum ক্লাসের সব কনস্ট্যান্টকে একটি অ্যারে হিসেবে রিটার্ন করে। এটি একটি static method যা আপনার Enum ক্লাসের সমস্ত কনস্ট্যান্টকে একত্রিত করে একটি অ্যারে প্রদান করে, যাতে আপনি তাদের উপর লুপ চালাতে পারেন।
Syntax:
public static T[] values()
- T:
Enumটাইপের কনস্ট্যান্ট।
Example:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Using values() to get all constants of the Day enum
Day[] days = Day.values();
for (Day day : days) {
System.out.println(day);
}
}
}
Output:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
ব্যাখ্যা:
Day.values()সমস্তDayenum কনস্ট্যান্টকে একটি অ্যারে হিসেবে রিটার্ন করেছে, এবং সেই অ্যারের উপরে লুপ চালিয়ে আমরা সমস্তDayকনস্ট্যান্ট দেখতে পেয়েছি।
2. valueOf() Method:
valueOf() মেথড একটি স্ট্যাটিক মেথড যা একটি স্ট্রিং ইনপুট গ্রহণ করে এবং সেই নামের সাথে মেলে এমন Enum কনস্ট্যান্ট রিটার্ন করে। যদি স্ট্রিংটি কোনও কনস্ট্যান্টের সাথে মেলেনা, তবে এটি IllegalArgumentException ছুঁড়ে দেয়।
Syntax:
public static T valueOf(String name)
- name:
Enumকনস্ট্যান্টের নাম যা স্ট্রিং হিসেবে দেওয়া হয়। - T:
Enumটাইপের কনস্ট্যান্ট।
Example:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Using valueOf() to get the enum constant
Day day = Day.valueOf("MONDAY");
System.out.println(day); // Output: MONDAY
}
}
Output:
MONDAY
ব্যাখ্যা:
Day.valueOf("MONDAY")মেথডটি"MONDAY"স্ট্রিং এর সাথে মিল রেখেDayenum থেকেMONDAYকনস্ট্যান্ট রিটার্ন করেছে।
Note: যদি "MONDAY" স্ট্রিং এর কোন কনস্ট্যান্ট না থাকে, তাহলে এটি IllegalArgumentException ছুঁড়ে দেবে।
3. ordinal() Method:
ordinal() মেথড একটি ইনস্ট্যান্স মেথড যা Enum কনস্ট্যান্টের আছানোর অবস্থান রিটার্ন করে। অর্থাৎ, এটি Enum কনস্ট্যান্টের ইনডেক্স বা পজিশন রিটার্ন করে, যা 0 থেকে শুরু হয়। এটি একটি int ভ্যালু রিটার্ন করে।
Syntax:
public int ordinal()
Example:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Using ordinal() to get the position of the enum constant
Day day = Day.WEDNESDAY;
System.out.println(day + " is at position " + day.ordinal());
}
}
Output:
WEDNESDAY is at position 3
ব্যাখ্যা:
Day.WEDNESDAY.ordinal()মেথডটিWEDNESDAYকনস্ট্যান্টের অবস্থান রিটার্ন করেছে, যা 3 (এবংordinal()0 থেকে গোনা শুরু হয়)।
সংক্ষেপে values(), valueOf(), ordinal() মেথডের কার্যকারিতা:
| Method | Purpose | Return Type |
|---|---|---|
values() | সমস্ত Enum কনস্ট্যান্টের অ্যারে রিটার্ন করে | T[] (Array) |
valueOf() | স্ট্রিং নাম দিয়ে একটি নির্দিষ্ট Enum কনস্ট্যান্ট রিটার্ন করে | T (Enum constant) |
ordinal() | Enum কনস্ট্যান্টের অবস্থান বা ইনডেক্স রিটার্ন করে | int (Position index) |
Java-তে Enum ক্লাসের values(), valueOf(), এবং ordinal() মেথডগুলি Enum কনস্ট্যান্টের সাথে কাজ করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
values()আপনাকে একটিEnumএর সমস্ত কনস্ট্যান্ট একত্রে অ্যারে আকারে প্রদান করে।valueOf()স্ট্রিং এর মাধ্যমে একটি নির্দিষ্ট কনস্ট্যান্ট রিটার্ন করে।ordinal()কনস্ট্যান্টের অবস্থান বা ইনডেক্স রিটার্ন করে, যা অ্যারের ইনডেক্সের মতো কাজ করে।
এই তিনটি মেথড Enum ক্লাসের কার্যক্ষমতা এবং দক্ষতা বৃদ্ধি করে, এবং Java প্রোগ্রামিংয়ে Enum ব্যবহারের সুবিধা নিশ্চিত করে।
Enum (enumeration) হল একটি বিশেষ ধরনের class যা একটি নির্দিষ্ট সংখ্যক কনস্ট্যান্ট ভ্যালু ধারণ করে। Java 5 থেকে enum প্রবর্তিত হয়েছে এবং এটি java.lang প্যাকেজে অন্তর্ভুক্ত। Enum ব্যবহার করা হয় বিভিন্ন প্রকারের কনস্ট্যান্ট (যেমন দিন, মাস, ট্রান্সপোর্ট মুড ইত্যাদি) ম্যানেজ করতে এবং কোডে এর ব্যবহার আরও স্পষ্ট, নিরাপদ ও সুসংগঠিত করতে।
Enum কি?
Enum একটি স্পেশাল ক্লাস যার মধ্যে পূর্বনির্ধারিত কনস্ট্যান্ট ভ্যালু থাকে, এবং এগুলি সাধারণ ক্লাসের মতো ফিল্ড, মেথড, কন্সট্রাক্টর ইত্যাদি ধারণ করতে পারে। Enum ব্যবহারের মাধ্যমে আপনি কনস্ট্যান্ট ভ্যালুগুলিকে আরও সুসংগঠিত এবং নিরাপদভাবে পরিচালনা করতে পারেন, এবং type-safe কনস্ট্যান্ট ব্যবহার নিশ্চিত করতে পারেন।
Enum ক্লাসের মৌলিক বৈশিষ্ট্য:
- Type Safety: Enum-এর কনস্ট্যান্টগুলির ধরন নিরাপদ থাকে, অর্থাৎ আপনি ভুল কনস্ট্যান্ট ব্যবহার করতে পারবেন না।
- Predefined Constants: Enum ব্যবহার করার মাধ্যমে আপনি একটি নির্দিষ্ট সংখ্যক কনস্ট্যান্টের তালিকা তৈরি করতে পারেন।
- Methods and Fields: Enum ক্লাসের মধ্যে ফিল্ড এবং মেথডও থাকতে পারে।
- Ordinal Value: Enum কনস্ট্যান্টের একটি অবস্থিত মান (ordinal) থাকে যা কনস্ট্যান্টের অবস্থান বোঝায়।
Enum এর Syntax:
enum EnumName {
CONSTANT1, CONSTANT2, CONSTANT3; // Enum constants
}
Enum এর মেথডসমূহ:
values() Method:
values()মেথডটি সমস্ত Enum কনস্ট্যান্টগুলির একটি অ্যারে রিটার্ন করে। এটিEnumক্লাসের একটি অ্যাবস্ট্রাক্ট মেথড যা প্রতিটি Enum ক্লাসে ডিফল্টভাবে উপস্থিত থাকে।- এই মেথডটি সাধারণত for-each লুপে সমস্ত কনস্ট্যান্টের উপর অপারেশন করার জন্য ব্যবহৃত হয়।
Syntax:
public static EnumName[] values()Example:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } public class EnumExample { public static void main(String[] args) { for (Day day : Day.values()) { System.out.println(day); } } }Output:
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAYvalueOf() Method:
valueOf()মেথডটি একটি স্ট্রিং ইনপুট নিয়ে, সেই স্ট্রিংয়ের সাথে মেলে এমন Enum কনস্ট্যান্ট রিটার্ন করে। যদি স্ট্রিংটি কোন Enum কনস্ট্যান্টের সাথে মেলে না, তবে এটি IllegalArgumentException ছুঁড়ে দেয়।
Syntax:
public static EnumName valueOf(String name)Example:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } public class EnumExample { public static void main(String[] args) { Day day = Day.valueOf("MONDAY"); // Using valueOf() method System.out.println(day); // Output: MONDAY } }Output:
MONDAYNote: যদি আপনি একটি অশুদ্ধ Enum constant ব্যবহার করেন (যেমন
valueOf("HOLIDAY")), তবে এটিIllegalArgumentExceptionছুঁড়ে দিবে।ordinal() Method:
ordinal()মেথডটি একটি Enum কনস্ট্যান্টের অবস্থান রিটার্ন করে (অর্থাৎ, Enum তালিকার মধ্যে তার অবস্থান)।ordinal()রিটার্ন করে একটি 0-based index। অর্থাৎ প্রথম কনস্ট্যান্টের জন্য এটি 0, দ্বিতীয় কনস্ট্যান্টের জন্য এটি 1, এবং এর পরবর্তী কনস্ট্যান্টের জন্য সেরকমভাবে ইন্ডেক্স রিটার্ন হয়।
Syntax:
public int ordinal()Example:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } public class EnumExample { public static void main(String[] args) { Day day = Day.MONDAY; System.out.println("The ordinal value of " + day + " is: " + day.ordinal()); } }Output:
The ordinal value of MONDAY is: 0
Enum এর মাধ্যমে Constants এর ম্যানেজমেন্ট:
- Enum এর Advantages:
- Type Safety: Enum ব্যবহার করে কনস্ট্যান্টের একটি সীমিত সেট তৈরি করা যায়, যা অন্যান্য সাধারণ কনস্ট্যান্টের তুলনায় অনেক বেশি নিরাপদ।
- Easy to Maintain: Enum কনস্ট্যান্টগুলির মান আগেই নির্ধারিত থাকে, তাই কোডের মধ্যে কোথাও ভুল কনস্ট্যান্ট ব্যবহারের সম্ভাবনা কম থাকে।
- Readable Code: Enum কনস্ট্যান্টগুলি কোডকে আরও স্পষ্ট এবং পাঠযোগ্য করে তোলে, বিশেষ করে যখন এটি অনেক কনস্ট্যান্টের মধ্যে ব্যবহৃত হয়।
- Improved Performance: Enum কনস্ট্যান্ট গুলি ইনস্ট্যান্সের পরিবর্তে static ফাইনাল ভ্যালু হিসেবে থাকে, ফলে কর্মক্ষমতা উন্নত হয়।
Enum ব্যবহার করার উদাহরণ: যদি আপনি কোন নির্দিষ্ট দিনের জন্য কনস্ট্যান্ট ভ্যালু ব্যবহার করতে চান, তাহলে Enum ব্যবহার করা অনেক ভালো। উদাহরণস্বরূপ, সপ্তাহের দিনগুলির জন্য একটি Enum তৈরি করতে পারেন:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } public class EnumExample { public static void main(String[] args) { Day today = Day.MONDAY; switch (today) { case MONDAY: System.out.println("Start of the work week."); break; case FRIDAY: System.out.println("End of the work week."); break; default: System.out.println("Mid-week."); break; } } }Output:
Start of the work week.
- Enum Java-তে constants এর ব্যবস্থাপনা এবং type-safety নিশ্চিত করতে ব্যবহৃত হয়। এটি একটি শক্তিশালী এবং কার্যকর উপায় যা কনস্ট্যান্ট ভ্যালুগুলির ব্যবহারে সুসংগতি এবং নিরাপত্তা নিশ্চিত করে।
values(),valueOf(), এবংordinal()মেথডগুলো Enum-এর কনস্ট্যান্টগুলির সাথে কাজ করতে সহজ করে তোলে, এবং কনস্ট্যান্ট ম্যানেজমেন্ট আরও সহজ ও সুবিধাজনক করে দেয়।
Read more